package en.edu.zxj.mq.common;

import en.edu.zxj.mq.mqserver.core.BasicProperties;

import java.io.IOException;

/**
 * Created with IntelliJ IDEA.
 * Description： 只是一个单纯的函数式接口(回调函数), 收到消息之后要处理消息时调用的方法
 *
 * @author: zxj
 * @date: 2024-03-02
 * @time: 20:18:05
 */
@FunctionalInterface
public interface Consumer {
    /**
     * @description: Delivery 的意思是 "投递", 这个方法预期是每次在服务器收到消息之后, 来调用
     * 通过这个方法把消息推送给对应的消费者
     * 注意: 这里的方法和参数名都是参考 RabbitMQ 的
     **/
    void handleDelivery(String consumerTag, BasicProperties basicProperties, byte[] body) throws MqException, IOException;
}
